package cc.loac.heba.tool;

import cc.loac.heba.pojo.Result;
import com.alibaba.fastjson.JSONObject;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.region.Region;
import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Random;

/**
 * 工具类
 */
public class Common {
    /**
     * 构造方法抛出异常返回的 Result
     * @return Result 实体类
     */
    public static Result exceptionResult() {
        Result result = new Result();
        result.setStatus(-1);
        result.setMessage("服务器发生未知错误");
        return result;
    }

    /**
     * 构造方法抛出异常返回格式化为 JSON 后的 Result 实体类
     * @return Result 实体类
     */
    public static String exceptionResults() {
        return Common.toJson(exceptionResult());
    }

    /**
     * 将实体类转为 String 类型 JSON
     * @param obj 实体类
     * @return String
     */
    public static String toJson(Object obj) {
        return JSONObject.toJSONString(obj);
    }

    /**
     * 获取指定长度随机字符串
     * @param length 指定长度
     * @param uppercase 是否大写
     * @return 随机字符串
     */
    public static String getRandomString(int length, boolean uppercase) {
        String str = "1234567890abcdefghijklmnopqrstuvwxyz";
        if (uppercase) {
            str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        }
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(36);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    /**
     * 获取指定长度随机字符串
     * @param length 指定长度
     * @return 随机字符串
     */
    public static String getRandomString(int length) {
        return getRandomString(length, true);
    }

    /**
     * 未提供 token 的返回 Result
     * @return Result
     */
    public static Result tokenIsNull() {
        Result result = new Result();
        result.setStatus(-2);
        result.setMessage("Token不存在或已过期");
        return result;
    }

    /**
     * 未提供 token 的返回 Result
     * @return Result
     */
    public static String tokenIsNulls() {
        return toJson(tokenIsNull());
    }

    /**
     * 获取中间文本
     * @param text 文本
     * @param firstText 前文本
     * @param lastText 后文本
     * @return 中间的文本
     */
    public static String getIntermediateText(String text, String firstText, String lastText) {
        int firstIndex = 0;
        int lastIndex = 0;
        if (!text.equals("")) {
            firstIndex = text.indexOf(firstText) + firstText.length();
            if(lastText.equals("")) {
                lastIndex = text.substring(firstIndex).length() + firstIndex;
            } else {
                lastIndex = text.indexOf(lastText, firstIndex);
            }
            return text.substring(firstIndex, lastIndex);
        } else {
            return "";
        }
    }
}
